﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XuanXiang.Infrastructure.Attr;
using XuanXiang.Infrastructure.Dto.Request;
using XuanXiang.Infrastructure.Dto.Request.System;
using XuanXiang.Infrastructure.Dto.Response;
using XuanXiang.Infrastructure.Dto.Response.System;

namespace XuanXiang.Service.Interface
{
    [Provider_]
    public interface I_System_Service
    {
        /// <summary>
        /// 检查权限
        /// </summary>
        /// <param name="uid"></param>
        /// <param name="urls"></param>
        /// <returns></returns>
        bool Check_Right(string? uid,List<string>? urls);
        /// <summary>
        /// 新增字典
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Add_Dictionary(Dictionary_Request_dto dto);

        /// <summary>
        /// 删除字典
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Delete_Dictionary(Delete_Dto dto);

        /// <summary>
        /// 获取所有的字典
        /// </summary>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Dictionarys(string? key);

        /// <summary>
        /// 获取字典下的子级
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Dictionarys_Children(string? id, string? key);

        /// <summary>
        /// 修改字典的禁用/启用
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Update_Dictionary_Ban(IsBan_Dto dto);

        /// <summary>
        /// 获取用户的菜单
        /// </summary>
        /// <param name="uid"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Users_Right(string uid);

        /// <summary>
        /// 获取所有的权限
        /// </summary>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Right(string? id);

        /// <summary>
        /// 修改权限菜单
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Update_Right(Update_Right_Dto dto);

        /// <summary>
        /// 新增权限
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Add_Right(Add_Right_Dto dto);

        /// <summary>
        /// 删除权限
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Delete_Right(Delete_Dto dto);

        /// <summary>
        /// 获取所有用户
        /// </summary>
        /// <param name="fenye_Dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Users(Fenye_Dto fenye_Dto);

        /// <summary>
        /// 用户授权
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Give_Users_Right(Right_dto dto);

        /// <summary>
        /// 获取所有部门
        /// </summary>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Dept();

        /// <summary>
        /// 获取部门下的用户
        /// </summary>
        /// <param name="fenye_Dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Dept_User(Fenye_Dto fenye_Dto);

        /// <summary>
        /// 获取所有岗位
        /// </summary>
        /// <param name="fenye_Dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Post(Fenye_Dto fenye_Dto);

        /// <summary>
        /// 新增部门
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Add_Dept(Add_Dept_Dto dto);

        /// <summary>
        /// 删除部门
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Del_Dept(string? id);

        /// <summary>
        /// 用户的禁用/启用
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> IsBan_Users(IsBan_Dto dto);

        /// <summary>
        /// 删除部门用户
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Del_User(string? id);

        /// <summary>
        /// 修改部门用户信息
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Update_Users(Users_Dto dto);

        /// <summary>
        /// 获取部门下的岗位
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Dept_Post(string id);

        /// <summary>
        /// 新增部门下的用户
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Add_User(Add_User_Dto dto);

        /// <summary>
        /// 获取单个岗位
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Single_Post(string? id);

        /// <summary>
        /// 获取岗位的用户
        /// </summary>
        /// <param name="fenye_Dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Single_Post_Users(Fenye_Dto fenye_Dto);

        /// <summary>
        /// 修改岗位
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Update_Post(Update_Post_Dto dto);

        /// <summary>
        /// 新增岗位
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Add_Post(Add_Post_Dto dto);

        /// <summary>
        /// 删除岗位
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Delete_Post(string? id);

        /// <summary>
        /// 获取去单个字典详情(商品类型)
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Api_Result_Dto> Get_Single_GoodsType_Dictionary(Fenye_Dto dto);
    }
}
